import moment from 'moment';

/**
 *
 * @param {*} d 日期
 * @description 格式化日期：今天、昨天、或者之前的日期
 */
export const formatDate = d => {
    if (typeof d === 'undefined') return null;
    const date = moment(d);
    if (moment(d).isSame(new Date(), 'day')) {
        return `今天 ${date.format('HH:mm')}`;
    }
    if (moment(d).isSame(moment(new Date()).add(-1, 'days'), 'day')) {
        return `昨天 ${date.format('HH:mm')}`;
    }
    if (moment(d).year() === moment(new Date()).year()) {
        return date.format('MM月DD日');
    }
    return date.format('YYYY.MM.DD');
};

/**
 *
 * @param {string} str 要生成的字符串
 * @param {number} limit 字符串长度达到的阈值
 * @param {number} start 开头要显示的文字长度
 * @param {number} end 结尾要显示的文字长度
 * @description 生成中间省略的字符串
 */
export const formatEllipsis = (str, limit = 20, start = 8, end = 8) => {
    if (typeof str === 'undefined') return null;
    if (str.length > limit) {
        return `${str.substring(0, start)}...${str.substring(str.length - end)}`;
    }
    return str;
};

/**
 *
 * @param {*} fileSize 文件大小
 * @description 格式化文件大小
 */
export const formatFileSize = fileSize => {
    if (typeof fileSize === 'undefined') return null;
    if (fileSize < 1024) {
        return `${fileSize}B`;
    }
    if (fileSize < 1024 * 1024) {
        let temp = fileSize / 1024;
        const arr = temp
            .toFixed(2)
            .toString()
            .split('.');
        temp = arr[1] === '00' ? temp : temp.toFixed(2);
        return `${temp}KB`;
    }
    if (fileSize < 1024 * 1024 * 1024) {
        let temp = fileSize / (1024 * 1024);
        const arr = temp
            .toFixed(2)
            .toString()
            .split('.');
        temp = arr[1] === '00' ? temp : temp.toFixed(2);
        return `${temp}MB`;
    }
    let temp = fileSize / (1024 * 1024 * 1024);
    const arr = temp
        .toFixed(2)
        .toString()
        .split('.');
    temp = arr[1] === '00' ? temp : temp.toFixed(2);
    return `${temp}GB`;
};

// 通过邮箱地址输出名字和头像url
/**
 *
 * @param {Object} avatarList GMS后端接口返回的员工头像和名字信息
 * @param {*} value 要读取的员工email地址
 */
export const formatEmployee = (avatarList = {}, value = null) => {
    const v = value ? value.toLowerCase() : null;
    if (Object.keys(avatarList).length > 0 && v && avatarList[v]) {
        return {
            url: avatarList[v].avatarFile[0] ? avatarList[v].avatarFile[0].url : '',
            name: avatarList[v].employeeName
        };
    }
    return { name: v };
};

export const checkEmails = email => {
    const reg = new RegExp('^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$');
    return reg.test(email);
};
